﻿#include"Stack.h"
// C++ 兼容c struct的用法
// 但是同时升级成了类
using namespace std;

//int main()
//{
//	//struct Stack st1;
//
//	Stack st2;
//	st2.top = 0;
//
//	st2.Init();
//	st2.Push(1);
//	st2.Push(2);
//	st2.Push(3);
//
//
//	return 0;
//}

//class Date
//{
//public:
//	void Init(int year, int month, int day)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//
//	void Print()
//	{
//		cout << _year << "/" << _month << "/" << _day << endl;
//	}
//	//private:
//	int _year;   // 声明还是定义？
//	int _month;
//	int _day;
//};

//int main()
//{
//	//class Date d0;
//	Date d1;    // 定义，对象实例化
//	//Date::_year++;  // 错误：因为他只能作为声明
//	d1.Init(2024, 1, 24);
//	d1._year++;
//
//	cout << sizeof(d1) << endl;
//	
//	//d1._day++;
//	d1.Print();
//
//	return 0;
//}

//class A1 {
//public:
//	void f1() {}
//private:
//	int _a;
//};
//
//class A2 {
//public:
//	void f2()
//	{
//		cout << "void f2()" << endl;
//	}
//};
//
//class A3
//{};
//
//int main()
//{
//
//	cout << sizeof(A1) << endl;
//	cout << sizeof(A2) << endl;
//	cout << sizeof(A3) << endl;
//
//	return 0;
//}

////
//class A2 {
//public:
//	void f2()
//	{
//		cout << "void f2()" << endl;
//	}
//};
//
//int main()
//{
//	/*int i = 0;
//	int j;*/
//
//	A2 a2;
//	A2* p1 = &a2;
//	p1->f2();
//
//	// 编译错误
//	// 运行错误
//	// 正常运行
//	A2* p2 = nullptr;
//	p2->f2();
//
//	return 0;
//}


//class Date
//{
//public:
//	void Init(int year, int month, int day)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//
//	void Print()
//	{
//		cout << _year << "/" << _month << "/" << _day << endl;
//	}
//	//private:
//	int _year;  
//	int _month;
//	int _day;
//};
//
//class Date
//{
//public:
//	void Init(int year, int month, int day)
//	{
//		this->_year = year;
//		_month = month;
//		_day = day;
//	}
//
//	 //const Date* const p;
//	//void Print(const Date* this)
//	//{
//	//	cout << this->_year << "-" << this->_month << "-" << this->_day << endl;
//	//}
//	
//	// 特点：
//	// 1、形参和实参的位置，我们不能显示写
//	// 2、函数内部可以使用
//	void Print()
//	{
//		//this = nullptr;
//		cout << this->_year << "-" << this->_month << "-" << _day << endl;
//	}
//	
//private:
//	// 声明
//	int _year; // 年
//	int _month; // 月
//	int _day; // 日
//};
//
//int main()
//{
//	Date d1;
//	d1.Init(2024, 1, 27);
//
//	Date d2;
//	d2.Init(2024, 2, 28);
//
//	//d1.Print(&d1);
//	//d2.Print(&d2);
//
//	d1.Print();
//	d2.Print();
//
//	return 0;
//}

//class Date
//{
//public:
//	void Init(int year, int month, int day)
//	{
//		this->_year = year;
//		_month = month;
//		_day = day;
//	}
//
//	void Print()
//	{
//		//this = nullptr;
//		cout << this->_year << "-" << this->_month << "-" << _day << endl;
//	}
//
//private:
//	// 声明
//	int _year; // 年
//	int _month; // 月
//	int _day; // 日
//};
//
//int main()
//{
//	Date d1;
//	d1.Init(2024, 1, 27);
//
//	Date d2;
//	d2.Init(2024, 2, 28);
//
//	const int i = 0;
//	int j = 1;
//	const char* p = "xzxxxxxx";
//	cout << &i << endl;
//	cout << &j << endl;
//	cout << &p << endl;
//	cout << (void*)p << endl;
//
//	return 0;
//}


//class A
//{
//public:
//	void Print()
//	{
//		cout << "Print()" << endl;
//	}
//private:
//	int _a;
//};
//int main()
//{
//	A* p = nullptr;
//	p->Print();
//	return 0;
//}

//下面程序编译运行结果是？ A、编译报错 B、运行崩溃 C、正常运行
//class A
//{
//public:
//	void PrintA()
//	{
//		cout << _a << endl;
//	}
//private:
//	int _a;
//};
//int main()
//{
//	A* p = nullptr;
//	p->PrintA();
//	return 0;
//}

class A
{
public:
	void PrintA()
	{
		cout << _a << endl;
	}
private:
	int _a;
};
int main()
{
	A* p = nullptr;
	(*p).PrintA();
	return 0;
}

